Method and apparatus for time domain equalization

ABSTRACT

A method and apparatus is described that may be utilized to equalize modal velocity changes on a data bus. Modal velocity changes may be equalized by use of variable delays that may be used to equalize modal velocity changes.

FIELD OF THE INVENTION

[0001] This invention relates broadly to the field of computers and in particular to the time domain equalization of signals utilized by the computer.

BACKGROUND

[0002] In multi-conductor bus systems, such as data and address buses on computer motherboards, cross talk between signals on the bus may cause modal velocity changes that depend on the transmitted data pattern. These modal velocity changes may significantly degrade the timing margins of digital systems and substantially decrease the maximum data rate that the bus can support. The effect may be especially significant for conventionally four-layer motherboards that may be utilized by manufactures to conform to cost and volume structures in the industry. These modal velocity changes may provide an incentive for manufactures to transition from four-layer motherboard's to six or eight layer motherboards to address margin and other issues related to the modal velocity of the data on buses.

[0003] However, generally the more layers that are required to manufacture a motherboard the more costly the motherboard may become. Given the extreme cost sensitivity in a computer industry, increasing the cost of a component such as motherboard may not be desirable.

[0004] Therefore, there is a continuing need to address modal velocity changes and other issues in multi-conductor systems.

BRIEF DESCRIPTION OF THE DRAWINGS

[0005] Features and advantages of embodiments of the claimed subject matter will become apparent as the following detailed description proceeds, and upon reference to the drawings, where in like numerals to pick like parts, and in which:

[0006]FIG. 1 is a block diagram of a computer system in accordance to an embodiment of the present invention;

[0007]FIG. 2 is a timing diagram illustrating modal velocity changes on a bus;

[0008]FIG. 3 illustrates a block diagram of an equalization circuit according to an embodiment of the present invention; and

[0009]FIG. 4 illustrates data on a data bus after time domain equalization in accordance to an embodiment of the present invention.

[0010] It should be understood that although the following detailed description will proceed with reference being made to illustrative embodiments of the claimed subject matter, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art. Accordingly, it is intended that the claimed subject matter be viewed broadly and be defined only as set forth in the accompanied claims.

DETAILED DESCRIPTION

[0011] Referring to FIG. 1, a computer 100 may include a processor (one or more microprocessors, for example) 102, that may be coupled to an equalization circuit 103 that may be coupled to a local bus 104. Also coupled to local bus 104 maybe, for example, a memory hub, or north bridge 106. The north bridge 106 provides interfaces to the local bus 104, a memory bus 108, an Accelerated Graphics Port (AGP) bus 112, and a hub link. The AGP bus is described in detail in the Accelerated Graphics Port Interface Specification, revision 1.0, published Jul. 31, 1996 by Intel Corporation, Santa Clara, Calif.

[0012] A system memory 110 may be accessed via the system bus 108, and an AGP device 114 may communicate over the AGP bus 112 and generate signals to drive a display 116. The system memory 110 may store various program instructions such as instructions for an operating system and application programs that may be utilized with the computer 100.

[0013] The north bridge 106 may communicate with a south bridge 110 over a hub link. In this manner, the south bridge 120 may provide an interface for the input/output (I/O) expansion bus 123 in a Peripheral Component Interconnect (PCI) bus 140. The PCI specification is available from the PCI Special Interest Group, Portland, Oreg., 97214. An I/O controller 130 maybe coupled to the I/O expansion bus 123 and may receive input from a mouse 132 and a keyboard 134 as well as control operations on a floppy disk 138. The south bridge 120 may, for example, control the operations of a hard disk 125 and a compact disk read only memory (CD-ROM) drive 121.

[0014] The equalization circuit 103 may provide modal velocity equalization of signals from the processor 102 to devices that may be coupled to bus 104 as may be described below.

[0015] Referring now to FIG. 2, a waveform 201 on a two-conductor bus is illustrated having an eye closure 202 and timing jitter 204. The timing jitter 204 may be caused by modal velocity changes induced by even or odd switching patterns on the two conductors. When data on both conductors are in phase, this may be considered an even mode. When data on the two conductors switch 180° out of phase, this may be considered odd mode.

[0016] The modal velocity changes may cause the transmission lines to have different time delays (TD) depending on the switching patterns. The closer the spacing of the buses, and the longer the lines are which comprise the buses, the greater the delay changes may be. The amount of timing jitter 204 may be affected therefore by the length of the bus lines and the switching phase of the signals on the bus lines. For even mode switching, the bus signals may be as illustrated by signal 206. For odd mode switching the timing may be as illustrated by signals 208.

[0017] As discussed above, each data pattern or word pattern, that represents a specific digital state on the bus, may introduce a particular propagation delay TD.

[0018] For a three-conductor bus, the middle conductor of the three-conductor bus may be significantly affected by its two adjacent neighbors. By considering only the two nearest conductors to a particular bus line, the majority of modal velocity effect may be accounted for because cross talk effects may fall off exponentially after the nearest neighbor.

[0019] Table 1 below illustrates six significant state changes that may occur on a three-conductor bus with an up arrow indicating a rising edge on a particular conductor of the bus and a down arrow indicating a falling edge on a particular conductor of the bus. While there are other state combinations possible on a three conductor bus, the other combinations may either be symmetrical or exactly opposite to the illustrated states in table 1 and therefore may be accounted for by the six illustrated states.

[0020] For each of the states illustrated in Table 1, a particular velocity or time delay may be associated with that state. The worst-case variations may be between odd and even states. For example, with respect to the middle conductor of a three conductor bus, the worst-case time delay may be associated with state two in table 1 were a center conductor is switching 180° from its adjacent neighbors. TABLE 1 1. ↑↑↑ Even state 2. ↑↓↑ Odd state 3. ↑↑↓ 2-bit even, 1 bit odd state 4. ↑↑0 2-bit even state 5. ↑↓0 2-bit odd state 6. 0↑0 2-bit even, 1 bit odd state

[0021] The actual velocities associated with each of the six states for a particular motherboard may be either determined from the physical motherboard geometries, or with a series of calibration steps that may drive different patterns onto the bus to record the propagation delays. In this manner, the particular delays associated with each bus state may be determined and recorded for use in equalizing the time delays on the bus.

[0022] In some embodiments, the determined propagation may be stored in a memory device. The contents of the memory device may then be referenced (looked up) to determined the amount of delay that may occur or the amount of delay that may be useful for inserting in one or more particular conductors of the bus to compensate, at least in part, for the model velocity effects of a particular data pattern on the bus.

[0023] Referring now to FIG. 3, the modal velocity equalization circuit 103 is illustrated where incoming data 301, such as may be source by microprocessor 102, may be latched by output latch 303 in some embodiments. The input data 301 may also be coupled to a digital state detector 305 which in turn may be coupled to a delay look up table 307. The delay look up table 307 may be coupled to delay cells 309 through 313. An output from each delay cell 309-313 may be in turn coupled to an I/O buffer 315-319. Delay cells 309-313 may also have inputs 321-325 coupled to output latch 303. I/O buffers 315-319 may have outputs coupled to a bus such as, for example, bus 104.

[0024] In some embodiments, the output latch 303 may serve to stabilize and hold the input data from the microprocessor 102. The I/O buffers 315-319 may be provided in some embodiments to drive the input data from the microprocessor 103, that are delayed by the delay cells 309-313, onto the host bus 104.

[0025] The equalization circuit 103 may compensate for data jitter on a bus such as induced by modal velocity changes by looking at each incoming word such as from data input data 301. In some embodiments, each incoming word may be evaluated bit by bit to determine the propagation delay that may correspond to that particular data state and adjusting the delay by delay cells 309-313 to reduce cross talk induced delay on bus 104.

[0026] The incoming data 301 may be evaluated by the digital state detector 305 which may output a particular bit pattern to the delay look up table 307 in some embodiments. The delay look up table may be, as one example, a memory device that may contain entries that may represent desired delay times for a particular input data word (state) such as from incoming data 301. The lookup table 307 may in response to a particular incoming data word bit pattern output, in some embodiments, 1 of 6 binary pattern outputs to the delay cells 309-313 that may equalize bus states such as illustrated in table 1. The delay cells 309-313 may in turn, in some embodiments, introduce 1 of 6 delay times to reduce effects of modal velocity changes of the input data word when driven on the bus 104.

[0027] Of course, while an equalization circuit for a three-conductor bus has been illustrated, this method and apparatus may be extended as desired to equalize modal velocity changes on N-conductor busses. Additionally, while digital state detector 305 and delay look up table 307 are illustrated as separate devices, in some embodiments, the two functions may be combined in one device.

[0028] Referring now to FIG. 4, an eye closure pattern 401 is illustrated for a two-conductor bus similar to that in FIG. 2. By equalizing the modal velocity changes such as by circuit 103 described above, the eye opening 401 may be expanded when compared to that of eye closure 202 of FIG. 2. This increased eye area may, in some embodiments, be achieved by minimizing the jitter 204, as illustrated in FIG. 2, by equalizing the modal velocities on a bus such as bus 104. While the two-connector bus is illustrated for reasons of simplicity, circuit 103 may be utilized, in some embodiments, for busses having N-conductors.

[0029] While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. For example, equalization may be applied to other busses. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention. 

What is claimed is:
 1. A device comprising: a delay cell having a plurality of selectable propagation delay times and an input coupled to a data input and the delay cell having an output; and a state detector coupled to the data input and coupled to the delay cell wherein in response to the state detector detecting a data input state, the delay cell selects, in part, a propagation delay time.
 2. A device as in claim 1 wherein the state detector outputs one of a plurality of data patterns in response to a detected data input state.
 3. A device as in claim 2 wherein the state detector includes a lookup device that is coupled to the delay cell and wherein the data lookup device outputs one of a plurality of output states in response to a detected data input state.
 4. A device as in claim 3 wherein the lookup device is a memory device.
 5. A device as in claim 4 wherein the lookup device is a programmable memory device.
 6. A device as in claim 2 wherein the data input is an input data bus having a plurality of signal lines and the delay cell output includes a plurality of signal lines associated, in a one-to-one relationship, with the input data bus signal lines.
 7. A device as in claim 6 wherein in response to the state detector detecting a data input state, the delay cell selects, in part, a propagation delay time associated with each of a plurality of signal lines of the input data bus.
 8. A device as in claim 7 wherein the delay cell is operative to selectively delay the propagation of data on each signal line of the input data bus through the delay cell.
 9. A device as in claim 8 wherein the digital state detector is coupled to a lookup device coupled to the delay cell and the lookup device is operative to output a particular data state in response to an output from the state detector.
 10. A system comprising: a processor; and a first memory storing a program to cause the processor to: output data that is coupled to a delay cell having a plurality of selectable propagation delay times and the delay cell having an output and; a state detector coupled to the processor output data and coupled to the delay cell wherein in response to the state detector detecting a data input state, the delay cell selects, in part, a propagation delay time.
 11. A system as in claim 10 wherein the state detector outputs one of a plurality of data patterns in response to a detected data input state.
 12. A system as in claim 11 wherein the state detector includes a lookup device that is coupled to the delay cell and wherein the data lookup device outputs one of a plurality of output states in response to a detected output data from the processor.
 13. A system as in claim 12 wherein the lookup device is a memory device.
 14. A system as in claim 13 wherein the lookup device is a programmable memory device.
 15. A system as in claim 11 wherein the output from the processor includes a plurality of signal lines and the delay cell output includes a plurality of signal lines associated, in a one-to-one relationship, with the input data bus signal lines.
 16. A system as in claim 15 wherein in response to the state detector detecting an output data state from the processor on the plurality of signal lines, the delay cell selects, in part, a propagation delay time associated with each of a plurality of signal lines of the processor.
 17. A system as in claim 16 wherein the delay cell is operative to selectively delay the propagation of data on each signal line of the processor output signal lines through the delay cell.
 18. A system as in claim 17 wherein the digital state detector is coupled to a lookup device coupled to the delay cell and operative to output a particular data state in response to an output from the state detector.
 19. A method comprising: receiving a data input; detecting a data state on the data input; selecting a propagation delay time from a plurality of delay times based, in part, on the detected data state; and transmitting the received data on a data bus delayed by at least the selected propagation delay time.
 20. A method as in claim 19 wherein detecting a data state includes outputting, by a state detector, a data state to a lookup device in response to the received data input.
 21. A method as in claim 20 further comprising the lookup device outputting a data state to at least one delay cell in response to output of the state detector.
 22. A method as in claim 21 wherein the at least one delay cell selects, in part, a delay from a plurality of delays in response to the output from the lookup device.
 23. A method as in claim 22 wherein each of a plurality of delay cells are operative to delay a unique portion of the received data input.
 24. A method as in claim 23 wherein each of the plurality of delay cells select, in part, a delay from a plurality of delays in response to the output from the lookup device.
 25. A method as in claim 24 wherein each of the plurality of delay cells are associated with particular bits that form the received data input in a one-to-one relationship and each of the plurality of delay cells delay their associated bit in response to the received data input data state. 